﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Data;
using System.Web.UI.WebControls;
using vudu.EnlaceDatos.SqlServer;
using vudu.Logica.Clases;
using vudu.PaginasWeb.G6Pensum;
namespace vudu.PaginasWeb.G6Pensum
{
    public partial class AgregarMateriasPensum1 : System.Web.UI.Page
    {
        TextBox miBox = new TextBox();
        SqlServerPensum miServer = new SqlServerPensum();
        List<Prelacion> milista = new List<Prelacion>();
        static int idPensum = 0;

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                string miRol = (string)Session["rol"];
                if (miRol != "Escuela")
                    Response.Redirect("../G3AccesoSistema/InicioSistema.aspx");
                Escuela miEscuela = (Escuela)Session["Usuario"];
                nombreEscuela.Text = miEscuela.NombreEscuela;
                Session["idMiEscuela"] = "Escuela: "+miEscuela.IdEscuela;
            }
            catch
            {
                //mensaje.Text = "Error: no se puede conectar con la base de datos";
                //mensaje.CssClass = "mensaje";
                ///mensaje.Visible = true;
            }

            if (!IsPostBack)
            {
                idPensum = (int)Session["idPensum2"];
                List<Materia> misMaterias = new List<Materia>();
                misMaterias = (List<Materia>)Session["materia"];

                MateriasGrid.DataSource = cargarMateriaTabla(misMaterias);
                MateriasGrid.DataBind();
            }
        }

        public DataTable cargarMateriaTabla(List<Materia> listaMateria)
        {
            // Generar la DataTable de la lista de materias
            DataTable table3 = new DataTable();

            table3.Columns.Add("Materia", typeof(string));
            table3.Columns.Add("Codigo", typeof(string));

            for (int indiceDeMaterias = 0; indiceDeMaterias < listaMateria.Count; indiceDeMaterias++)
            {
                table3.Rows.Add(listaMateria[indiceDeMaterias].Nombre, listaMateria[indiceDeMaterias].Codigo);
            }

            return table3;
        }
        //Devuelve los datos datos insertados por el usuario de una materia por fila y los agrega a una lista de materias
        public List<Prelacion> DevolverDatosMateria()
        {
            //Se recorre todo el GridView de Materias 
            foreach (GridViewRow row in MateriasGrid.Rows)
            {
                Prelacion miPrelacion = new Prelacion();
                Materia miMateria = new Materia();
                miBox = row.FindControl("texbox1") as TextBox;
                miPrelacion.CreditoMateriaPensum = Convert.ToInt32(miBox.Text);
                DropDownList combo = row.FindControl("comboSemestre") as DropDownList;
                miPrelacion.SemestreMateriaPensum = Convert.ToInt32(combo.SelectedValue);
                miMateria.Nombre = row.Cells[2].Text;
                miMateria.Codigo = Convert.ToInt32(row.Cells[3].Text);
                miPrelacion.MiMateriaPensum = miMateria;          
                milista.Add(miPrelacion);
            }
            return milista;
        }
        //Metodo que se activa al presionar el boton de Aceptar al seleccionar una materia
        public void Button1_Click(object sender, EventArgs e)
        {
            bool validacionAgregacion = false;
            //Aqui se hace la llamada al metodo que devuelve todos los datos de las materias agregadas
            milista = DevolverDatosMateria();
            //Se recorre la lista y se llama a insertar una materia sin prelacion con todos los datos de cada materia
            for (int indiceDeMaterias = 0; indiceDeMaterias < milista.Count; indiceDeMaterias++)
            {
                miServer.InsertarSinPrelacion(milista[indiceDeMaterias],idPensum);
                validacionAgregacion = true;
            }

            if (validacionAgregacion)
                ShowAlertMessage("La(s) materia(s) fueron agregadas con exito");
            else
            {
                mensaje.Text = "Error: no se puede conectar con la base de datos";
                mensaje.CssClass = "mensaje";
                mensaje.Visible = true;
            }
            
        }

        //Para manejar los mensajes de error
        public static void ShowAlertMessage(string error)
        {

            Page page = HttpContext.Current.Handler as Page;
            if (page != null)
            {
                error = error.Replace("'", "\'");
                ScriptManager.RegisterStartupScript(page, page.GetType(), "err_msg", "alert('" + error + "');window.location='../G6Pensum/ListarPensum.aspx';", true);
            }
        }

    }
}